GENERIC TILES

NAMES USED IN THE CODE
In the code we use the name tiles for different things:
- tile absolute index  [used to display]  "_TILE_{index}", i.e., and index in memory that points to the tile data
- tile relative index  [used to redefine] "_TILE_{index}_OFFSET", i.e. a relative index in memory (e.g., Atari 8-bit mode 1 characters are repeated 4 times)
- tile data (in template files)           "<TILE_{tile #}>", i.e., this is the data that defines the shape of tiles 
- tile data in C code (in header files)   "_TILE_{tile #}_UDG" contains "<TILE_{tile #}>"

LINKED TILES VS TILES BY EXPLICIT REDEFINITION IN C CODE 
Cross-Lib supports different ways to enable tiles:
- by to-be-linked Assembly files with the tiles data
- by including header files with tiles definitions

TEMPLATED TILE FILES
Templates cover both cases described above (linked Assembly and header files).
Both to-be-linked Assembly files and tile header files are generated by Python scripts "generate_assets.py" and "copy_assets.py" found in src/assets/.
The scripts use 
- the templates in /src/assets/templates with "<TILE_{tile #}>" tags and 
- the game-specific tile data in /src/games/<game_name>/tiles or /src/demos/<demo_name>/tiles where 
the file "tile_<tile #>.txt" contains the data the are meant to replace "<TILE_{tile #}>" in all templates
The result of the execution of the Python scripts is store in /src/games/<game_name>/generated_assets or /src/demos/<demo_name>/generated_assets.

SUB-TARGET-SPECIFIC TILES
Tiles are implemented differently on each target and sub-target as this depend on the graphics mode chosen in Cross-Lib.
Each tile is identified by a absolute index (used to display it) "_TILE_{index}" and a relative index (used to redefined it) "_TILE_{index}_OFFSET".
These indices are defined in /src/cross_lib/display/tiles.

TILES DEFINED THROUGH HEADER FILES
For tiles that are defined by included header files (not by linked Assembly), the tile data is defined in "_TILE_{tile #}_UDG".
Each target may use some specific code to redefine characters code.
Most targets use the definitions and code in /src/cross_lib/display/redefined_characters/udg_map.h.





